export function validateEmail(_rule, value) {
  const emailReg = /^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/

  if (value === '') {
    return Promise.reject('请输入邮箱!')
  } else if (!emailReg.test(value)) {
    return Promise.reject('请输入正确的邮箱!')
  } else {
    return Promise.resolve()
  }
}

export function validatePhone(_rule, value) {
  const phoneReg = /^(0|86|17951)?(13[0-9]|15[012356789]|166|17[3678]|18[0-9]|14[57])[0-9]{8}$/

  if (value === '') {
    return Promise.reject('请输入手机号!')
  } else if (!phoneReg.test(value)) {
    return Promise.reject('请输入正确的手机号!')
  } else {
    return Promise.resolve()
  }
}

export function validateIdcard(_rule, value) {
  const idcardReg =
    /^(^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$)|(^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])((\d{4})|\d{3}[Xx])$)$/

  if (value === '') {
    return Promise.reject('请输入身份证号!')
  } else if (!idcardReg.test(value)) {
    return Promise.reject('请输入正确的身份证号!')
  } else {
    return Promise.resolve()
  }
}

export function validatePass(_rule, value) {
  const passReg = /^(?=.*[a-z])(?=.*[A-Z]).{8,20}$/

  if (value === '') {
    return Promise.reject('请输入密码!')
  } else if (!passReg.test(value)) {
    return Promise.reject('密码长度需为8~20位，且包含大小写字母!')
  } else {
    return Promise.resolve()
  }
}

export function validateNumber(rule, value, callback) {
  if (value === null || value === '') {
    // 必填验证已在 required 规则中处理，这里直接返回
    callback()
  } else if (isNaN(Number(value))) {
    callback(new Error('请输入有效的数字'))
  } else {
    callback()
  }
}
